package com.atguigu.pojo;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.awt.*;
import java.util.List;

public class Dom4jTest {

    @Test
    public void test1() throws Exception {
        // 创建一个SaxReader输入流，去读取 xml配置文件，生成Document对象
        SAXReader saxReader = new SAXReader();

        Document document = saxReader.read("src/books.xml");

        System.out.println(document);
    }

    @Test
    public void test2() throws Exception {
        //1. 通过创建SAXReader对象。来读取xml文件，获取Document对象
        SAXReader reader = new SAXReader();
        // 在Junit测试中，相对路径是从模块名开始算
        Document document = reader.read("src/books.xml");

        //2. 通过Document 对象获取根元素
        Element rootElement = document.getRootElement();
        System.out.println( rootElement);

        //3. 通过根元素获取book标签对象
        // element()和elements()都是通过标签名查找子元素
        List<Element> books = rootElement.elements("book");
        //4. 遍历，处理每个book标签转换为book类
        for (Element book : books) {
            //asXML() 把标签对象，转换为标签字符串
            //System.out.println( book.asXML());
            // 拿到book下面的name元素对象
            Element nameElement = book.element("name");
            // 拿到book下面的price元素对象
            Element priceElement = book.element("price");
            // 拿到book下面的author元素对象
            Element authorElement = book.element("author");
            // 再通过getText() 方法拿到起始标签和结束标签之间的文本内容
            System.out.println("书名" + nameElement.getText() + " , 价格:"
                    + priceElement.getText() + ", 作者：" + authorElement.getText());
        }
    }
}
